<?
require_once dirname(__FILE__) . '/cbase.php';

class CUsuario extends CBase {
	
	public function __construct() {
		parent::__construct();
	}
	
	public function index() {
		redirect('cusuario/listar', 'refresh');
	}

	private function _listaPerfil() {
        $perfil = new Perfil();
        $perfis = $perfil->recuperar();

        foreach ($perfis as $tmp) {
            $lista[$tmp->pe_id] = $tmp->pe_nome;
        }

        return $lista;
	}
	
    private function _listaStatus($tipo = 'Selecione') {
        $this->lang->load('dominio_fixo');
        $lista = $this->lang->line('usuario_status');
        $lista[0] = $tipo;
        ksort($lista);

        return $lista;
	}

	private function _listaPerfilSelecionado($us_id) {
        $perfil = new UsuarioPerfil();
        $perfil->us_id = $us_id;
        $perfis = $perfil->recuperar();

        $lista = array();

        foreach ($perfis as $tmp) {
            $lista[] = $tmp->pe_id;
        }

        return $lista;
	}

	public function listar() {
		$dados['usuario'] = new Usuario();
		$dados['lista_status'] = $this->_listaStatus('Todos');
		
		$this->template->add_js(js_url() . 'usuario/listar.js');
		$this->template->write_view('conteudo', 'usuario/listar', $dados);
		$this->template->render();
	}
	
	public function manter($us_id) {
		$usuario = new Usuario();
		if ($us_id) {
			$usuario->us_id = $us_id;
			$ret_usu = $usuario->recuperar();
            $dados['lista_perfil_selecionado'] = $this->_listaPerfilSelecionado($us_id);
		}
		else
            $dados['lista_perfil_selecionado'] = null;

        $dados['lista_perfil'] = $this->_listaPerfil();
		$dados['lista_status'] = $this->_listaStatus();
		$dados['usuario'] = isset($ret_usu) && (count($ret_usu)) ? $ret_usu[0] : $usuario;

		$this->template->add_js(js_url() . 'usuario/manter.js');
		$this->template->write_view('conteudo', 'usuario/manter', $dados);
		$this->template->render();
	}
	
	public function salvar() {
		$usuario = new Usuario();
		$usuario->setFrom($_POST);

		// alterar
		if ($this->input->post('us_id')) {
			if ($this->input->post('senha'))
				$usuario->us_senha = md5($this->input->post('senha'));

			$usuario_perfil = new UsuarioPerfil();
			$usuario_perfil->us_id = $usuario->us_id;
			$usuario_perfil->excluir();

			$usuario->alterar();
			$us_id = $usuario->us_id;
			
		}
		// inserir
		else {
			$usuario->us_senha = md5($this->input->post('senha'));
			$us_id = $usuario->inserir();
		}
		
		foreach ($this->input->post('perfis') as $tmp) {
            $usuario_perfil = new UsuarioPerfil();
            $usuario_perfil->pe_id = $tmp;
            $usuario_perfil->us_id = $us_id;
            $usuario_perfil->inserir();
		}

		redirect('cusuario/listar', 'refresh');
	}
	
	public function ajaxExcluir() {
		$usuario = new Usuario();
		$usuario->us_id = $this->input->post('id');
		$usuPerfil = new UsuarioPerfil();
		$usuPerfil->us_id = $usuario->us_id;
		$usuPerfil->excluir();
		$usuario->excluir();
	}
	
	/**
	 * verifica se o login ja esta cadastrado na base
	 * 
	 * @param int $usuario: id do usuario atual que esta sendo atualizado
	 * 
	 * @return boolean: true - cadastrado / false - nao cadastrado
	 */
	public function ajaxLoginJaCadastrado($usuario) {
		$login = $this->input->post('login');
		
		if (isset($usuario) && $usuario) {
			$atual = new Usuario();
			$atual->us_id = $usuario;
			$usuario_atual = $atual->recuperar();
			$login_atual = $usuario_atual[0]->us_login;
		}
		else {
			$login_atual = null;
		}

		if ($login_atual != $login) {
			$usuario = new Usuario();
			$usuario->us_login= $login;
			$total = $usuario->total();
			echo $total > 0 ? true : false;
		}
		else {
			echo false;
		}
	}
	
	public function ajaxBuscarUsuarios() {
		$limite = $this->input->get('limite');
		$inicio = ($this->input->get('pagina') - 1) * $limite;
        $order  = $this->input->get('order');
		$order = explode(' ', $order);
		$direcao = $order[1];

		switch ($order[0]) {
			case '2':
				$campo_ordenacao = 'us_nome';
				break;

			case '3':
				$campo_ordenacao = 'us_login';
				break;
				
			case '4':
				$campo_ordenacao = 'us_email';
				break;

			case '5':
			    $campo_ordenacao = 'us_status';
			    break;
				
			default:
				$campo_ordenacao = 'us_id';
		}		

		$usuario = new Usuario();
		$usuario->us_id = $this->input->get('us_id')?$this->input->get('us_id'):NULL;
		$usuario->us_nome = $this->input->get('us_nome') ? $this->input->get('us_nome') . '%' : NULL;
		$usuario->us_login = $this->input->get('us_login') ? $this->input->get('us_login') . '%' : NULL;
		$usuario->us_status = $this->input->get('us_status')?$this->input->get('us_status'): NULL;
		
		$usuario->limite($limite, $inicio);
		$usuario->ordenarPor("$campo_ordenacao $direcao");
		$usuarios = $usuario->recuperar();
		$resp['total'] = count($usuarios);
		
		$lista_status = $this->_listaStatus('Todos');
		
		$total_pagina = count($usuarios);
		for ($i = 0; $i < $total_pagina; $i++) {
		
			$botoes = "<input type='image' src='" . img_url() . "icon_editar_ativo.png' alt='editar' title='Editar' onclick='manter({$usuarios[$i]->us_id})'>";
			$botoes .= "<input type='image' src='" . img_url() . "icon_excluir_ativo.png' alt='excluir' title='Excluir' onclick='excluir({$usuarios[$i]->us_id})'>";

			$resp['data'][$i][1] = $usuarios[$i]->us_id;
			$resp['data'][$i][2] = $usuarios[$i]->us_nome;
			$resp['data'][$i][3] = $usuarios[$i]->us_login;
			$resp['data'][$i][4] = $usuarios[$i]->us_email;
			$resp['data'][$i][5] = $lista_status[$usuarios[$i]->us_status];
			$resp['data'][$i][6] = $botoes;
		}
		
		echo json_encode($resp);
	}
	
	public function semPermissao() {
		$this->template->write_view('conteudo', 'usuario/sem_permissao');
		$this->template->render();
	}
	
}
